package com.tfjybj.itoo.teach.provider.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tfjybj.itoo.teach.entity.SemesterEntity;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * SemesterDao接口
 * semester表
 *
 * @author 田成荣
 * @version 2.0.0
 * @since 2.0.0 2018-11-14 14:41:55
 */
@Repository("semesterDao")
public interface SemesterDao extends BaseMapper<SemesterEntity> {
	
	//region 模板生成：模糊查询
	/**
     * 根据学年学期名称模糊查询semester
     *
     * @param name  学年学期名称
     * @return 模糊查询的semester集合
     * @author 田成荣
     * @since 2.0.0 2018-11-14 14:41:55
     */
    List<SemesterEntity> queryLikeName(@Param("name") String name);
	//endregion

    /* **********************************以下为非模板生成的内容********************************* */

    /**
     * 查询所有SemesterEntity记录
     *胡泽宽--
     * @return 所有的semester集合
     * @author 胡泽宽
     * @since 2.0.0 2018年11月17日 15:25:08
     */
    List<SemesterEntity> querySemester();


    /**
     * 根据学年学期名称或code模糊查询semester
     *
     * @param name  学年学期名称
     * @return 模糊查询的semester集合
     * @author 胡泽宽
     * @since 2.0.0 2018年11月21日 10:17:42
     */
    List<SemesterEntity> queryLikeNameorCode(@Param("name") String name);

    /**
     * 详细根据学年学期名称或code模糊查询semester
     *
     * @param name  学年学期名称
     * @param isGraduate  是否毕业
     * @param isCurrent  是否当前
     * @return 模糊查询的semester集合
     * @author 胡泽宽
     * @since 2.0.0 2018年11月21日 15:00:11
     */
   List<SemesterEntity> queryLikeNameorCodedetail(@Param("name") String name, @Param("isGraduate") Integer isGraduate, @Param("isCurrent") Integer isCurrent);

    /**
     * 获得当前学年学期的自增id
     * @return 第一个incremendids
     * @author 胡泽宽
     * @since 2.0.0 2018年11月24日 09:32:03
     */
    Integer presentId();

    /**
     * 获得当前学年学期的前后的几条记录的详细信息
     * @return List<SemesterEntity>
     * @author 胡泽宽
     * @since 2.0.0 2018年11月24日 10:21:53
     */
    List<SemesterEntity> getYearSemesterList(@Param("listincremendids") List<Integer> listincremendids);

    /**
     * 获得当前学年学期code的前后的几条记录的详细信息list<string>
     * @return List<String>
     * @author 胡泽宽
     * @since 2.0.0 2018年11月24日 12:24:00
     */
    List<String> getYearSemesterCode(@Param("listincremendids") List<Integer> listincremendids);

    /**
     * 获得当前学年学期name的前后的几条记录list<string>
     * @return List<String>
     * @author 胡泽宽
     * @since 2.0.0 2018年11月24日 12:24:00
     */
    List<String> getYearSemesterName(@Param("listincremendids") List<Integer> listincremendids);

    /**
     * 重复添加校验
     *
     * @param name code
     * @return Integer
     * @author 胡泽宽
     * @since 2.0.0 2018年11月25日 14:21:23
     */
    Integer checkSemesterbycodeorname(@Param("name") String name, @Param("code") String code);


    /**
     * 获取下一年的学年学期
     * @author 井朝
     * @since 2018年12月19日13:18:12S
     */
    List<SemesterEntity> getNextYearSemester();

    /**
     * 无参查询semester信息
     * @author 杨江涛
     * @since 2018年11月17日15:51:06
     * @return SemesterEntity
     */
    List<SemesterEntity> selSemesterId();
}
